<script>-- This button updates the Stack-O-Dead stacks. It copies a new-- version of the PopUp menu XFCN, which is XFCN 1718-- It then updates a number of scriptson mouseUpglobal localPathanswer "Are you sure you are ready..." with "OK" or "Cancel"if it is not "OK" thenput "Upgrade not done!"exit mouseUpend if--put getPath() into localPathupgradeShowsupgradeTapesupgradeLabelsupgradeSongsupgradeStatsupgradeUtilityupgradeTunesend mouseUpon upgradeShowspush cardfixPopUp "Dead Shows"put card field "Shows-Labels Button" into LabelsScriptput card field "Shows-Tapes Button" into TapesScript--go stack "Dead Shows"fixStackScriptset the script of bg button "Labels" to LabelsScriptset the script of bg button "Tapes" to TapesScriptpop cardend upgradeShowson upgradeTapespush cardfixPopUp "Dead Tapes"put card field "Tapes-Background" into BgScript--go stack "Dead Tapes"fixStackScriptset the script of this background to BgScriptpop cardend upgradeTapeson upgradeLabelspush cardfixPopUp "Dead Labels"put card field "Labels-Background" into BgScriptput card field "Labels-Print" into PrintScript--go stack "Dead Labels"fixStackScriptfixLabelsset the script of this background to BgScriptset the script of bg button "Print" to PrintScriptpop cardend upgradeLabelson upgradeSongspush cardfixPopUp "Songs"--go stack "Songs"fixStackScriptpop cardend upgradeSongson upgradeStatspush cardfixPopUp "Dead Stats"--go stack "Dead Stats"fixStackScriptpop cardend upgradeStatson upgradeUtilitypush cardput card field "Utility-About" into AboutTextfixPopUp "Dead Utility"--go stack "Dead Utility"fixStackScriptgo card 1put AboutText into cd field "About"pop cardend upgradeUtilityon upgradeTunespush cardgo stack "Dead Tunes"fixStackScriptpop cardend upgradeTuneson fixLabelsdoMenu "Background"choose select tooldrag from 102,34 to 234,50doMenu "Clear Picture"drag from 30,216 to 146,230doMenu "Clear Picture"show bg field "top title"set the style of bg field "top title" to "opaque"set the autoTab of bg field "top title" to "false"set the lockText of bg field "top title" to "true"set the showLines of bg field "top title" to "false"set the textAlign of bg field "top title" to "center"set the textFont of bg field "top title" to "Geneva"set the textHeight of bg field "top title" to "16"set the textSize of bg field "top title" to "12"set the textStyle of bg field "top title" to "bold,outline,shadow,condense"set the wideMargins of bg field "top title" to "false"set the dontSearch of bg field "top title" to "true"set the dontWrap of bg field "top title" to "false"set the fixedLineHeight of bg field "top title" to "true"set the sharedText of bg field "top title" to "true"put "Grateful Dead" into bg field "top title"--show bg field "side title"set the style of bg field "side title" to "opaque"set the rect of bg field "side title" to "29,216,217,230"set the visible of bg field "side title" to "true"set the autoTab of bg field "side title" to "false"set the lockText of bg field "side title" to "true"set the showLines of bg field "side title" to "false"set the textAlign of bg field "side title" to "left"set the textFont of bg field "side title" to "Geneva"set the textHeight of bg field "side title" to "12"set the textSize of bg field "side title" to "9"set the textStyle of bg field "side title" to "bold,outline,shadow,condense"set the wideMargins of bg field "side title" to "false"set the dontSearch of bg field "side title" to "true"set the dontWrap of bg field "side title" to "false"set the fixedLineHeight of bg field "side title" to "true"set the sharedText of bg field "side title" to "true"put "Grateful Dead" into bg field "side title"--doMenu "Background"choose browse toolend fixLabels-------------------- Utility Scripts -----------------------on fixPopUp toStackglobal localPathput "upgrading " & quote & toStack & quote & "..."put localPath & the short name of this stack into fromFileput localPath & toStack into toFileCopyRes "XFCN", "PopUp", toFile, fromFileend fixPopUpon fixStackScriptput "-" & "-" & " Version 1.8.2" into verLineget line 1 of the script of this stackif it is verLine then exit fixStackScript--put verLine & return & return &¬"on version" & return &¬" put line 1 of the script of this stack" & return &¬"end version" & return & return &¬the script of this stack into StackScript--set the script of this stack to StackScriptend fixStackScriptfunction getPathput the long name of this stack into thisPathdelete char 1 to (the length of ("stack" && quote)) of thisPathdelete last char of thisPathput the short name of this stack into shortNameput ((the length of thisPath) - (the length of shortName)) into pathLenput char 1 to pathLen of thisPath into pathNamereturn pathNameend getPathfunction trimIt namedelete char 1 to (the length of ("stack" && quote)) of namedelete last char of namereturn nameend trimIt</script>
</part>
<part>
<id>2</id>
<type>field</type>
<visible> <true /> </visible>
<dontWrap> <false /> </dontWrap>
<dontSearch> <false /> </dontSearch>
<sharedText> <false /> </sharedText>
<fixedLineHeight> <false /> </fixedLineHeight>
<autoTab> <false /> </autoTab>
<lockText> <false /> </lockText>
<rect>
<left>20</left>
<top>11</top>
<right>241</right>
<bottom>189</bottom>
</rect>
<style>shadow</style>
<autoSelect> <false /> </autoSelect>
<showLines> <false /> </showLines>
<wideMargins> <true /> </wideMargins>
<multipleLines> <false /> </multipleLines>
<reservedFamily> 0 </reservedFamily>
<titleWidth>0</titleWidth>
<icon>0</icon>
<textAlign>left</textAlign>
<font>New York</font>
<textSize>10</textSize>
<textStyle>plain</textStyle>
<textHeight>13</textHeight>
<name></name>
<script></script>
</part>
<part>
<id>3</id>
<type>field</type>
<visible> <false /> </visible>
<dontWrap> <true /> </dontWrap>
<dontSearch> <false /> </dontSearch>
<sharedText> <false /> </sharedText>
<fixedLineHeight> <false /> </fixedLineHeight>
<autoTab> <false /> </autoTab>
<lockText> <true /> </lockText>
<rect>
<left>27</left>
<top>27</top>
<right>231</right>
<bottom>177</bottom>
</rect>
<style>rectangle</style>
<autoSelect> <false /> </autoSelect>
<showLines> <false /> </showLines>
<wideMargins> <true /> </wideMargins>
<multipleLines> <false /> </multipleLines>
<reservedFamily> 0 </reservedFamily>
<titleWidth>0</titleWidth>
<icon>0</icon>
<textAlign>left</textAlign>
<font>Courier</font>
<textSize>10</textSize>
<textStyle>plain</textStyle>
<textHeight>13</textHeight>
<name>Shows-Labels Button</name>
<script></script>
</part>
<part>
<id>4</id>
<type>field</type>
<visible> <false /> </visible>
<dontWrap> <true /> </dontWrap>
<dontSearch> <false /> </dontSearch>
<sharedText> <false /> </sharedText>
<fixedLineHeight> <false /> </fixedLineHeight>
<autoTab> <false /> </autoTab>
<lockText> <true /> </lockText>
<rect>
<left>52</left>
<top>48</top>
<right>256</right>
<bottom>198</bottom>
</rect>
<style>rectangle</style>
<autoSelect> <false /> </autoSelect>
<showLines> <false /> </showLines>
<wideMargins> <true /> </wideMargins>
<multipleLines> <false /> </multipleLines>
<reservedFamily> 0 </reservedFamily>
<titleWidth>0</titleWidth>
<icon>0</icon>
<textAlign>left</textAlign>
<font>Courier</font>
<textSize>10</textSize>
<textStyle>plain</textStyle>
<textHeight>13</textHeight>
<name>Shows-Tapes Button</name>
<script></script>
</part>
<part>
<id>5</id>
<type>field</type>
<visible> <false /> </visible>
<dontWrap> <true /> </dontWrap>
<dontSearch> <false /> </dontSearch>
<sharedText> <false /> </sharedText>
<fixedLineHeight> <false /> </fixedLineHeight>
<autoTab> <false /> </autoTab>
<lockText> <true /> </lockText>
<rect>
<left>28</left>
<top>28</top>
<right>232</right>
<bottom>178</bottom>
</rect>
<style>rectangle</style>
<autoSelect> <false /> </autoSelect>
<showLines> <false /> </showLines>
<wideMargins> <true /> </wideMargins>
<multipleLines> <false /> </multipleLines>
<reservedFamily> 0 </reservedFamily>
<titleWidth>0</titleWidth>
<icon>0</icon>
<textAlign>left</textAlign>
<font>Courier</font>
<textSize>10</textSize>
<textStyle>plain</textStyle>
<textHeight>13</textHeight>
<name>Tapes-Background</name>
<script></script>
</part>
<part>
<id>6</id>
<type>field</type>
<visible> <false /> </visible>
<dontWrap> <true /> </dontWrap>
<dontSearch> <false /> </dontSearch>
<sharedText> <false /> </sharedText>
<fixedLineHeight> <false /> </fixedLineHeight>
<autoTab> <false /> </autoTab>
<lockText> <true /> </lockText>
<rect>
<left>28</left>
<top>28</top>
<right>232</right>
<bottom>178</bottom>
</rect>
<style>rectangle</style>
<autoSelect> <false /> </autoSelect>
<showLines> <false /> </showLines>
<wideMargins> <true /> </wideMargins>
<multipleLines> <false /> </multipleLines>
<reservedFamily> 0 </reservedFamily>
<titleWidth>0</titleWidth>
<icon>0</icon>
<textAlign>left</textAlign>
<font>Courier</font>
<textSize>10</textSize>
<textStyle>plain</textStyle>
<textHeight>13</textHeight>
<name>Labels-Background</name>
<script></script>
</part>
<part>
<id>7</id>
<type>field</type>
<visible> <false /> </visible>
<dontWrap> <true /> </dontWrap>
<dontSearch> <false /> </dontSearch>
<sharedText> <false /> </sharedText>
<fixedLineHeight> <false /> </fixedLineHeight>
<autoTab> <false /> </autoTab>
<lockText> <true /> </lockText>
<rect>
<left>28</left>
<top>44</top>
<right>232</right>
<bottom>194</bottom>
</rect>
<style>rectangle</style>
<autoSelect> <false /> </autoSelect>
<showLines> <false /> </showLines>
<wideMargins> <true /> </wideMargins>
<multipleLines> <false /> </multipleLines>
<reservedFamily> 0 </reservedFamily>
<titleWidth>0</titleWidth>
<icon>0</icon>
<textAlign>left</textAlign>
<font>Courier</font>
<textSize>10</textSize>
<textStyle>plain</textStyle>
<textHeight>13</textHeight>
<name>Labels-Print</name>
<script></script>
</part>
<part>
<id>11</id>
<type>field</type>
<visible> <false /> </visible>
<dontWrap> <false /> </dontWrap>
<dontSearch> <false /> </dontSearch>
<sharedText> <false /> </sharedText>
<fixedLineHeight> <false /> </fixedLineHeight>
<autoTab> <false /> </autoTab>
<lockText> <false /> </lockText>
<rect>
<left>28</left>
<top>77</top>
<right>205</right>
<bottom>139</bottom>
</rect>
<style>rectangle</style>
<autoSelect> <false /> </autoSelect>
<showLines> <false /> </showLines>
<wideMargins> <false /> </wideMargins>
<multipleLines> <false /> </multipleLines>
<reservedFamily> 0 </reservedFamily>
<titleWidth>0</titleWidth>
<icon>0</icon>
<textAlign>left</textAlign>
<font></font>
<textSize>12</textSize>
<textStyle>plain</textStyle>
<textHeight>16</textHeight>
<name>Utility-About</name>
<script></script>
</part>
<content>
<layer>card</layer>
<id>2</id>
<text><span class="style1">his stack will update release 1.8, or 1.8.1, of Stack-O-Dead to release 1.8.2.Put this stack, along with </span><span class="style4">copies</span><span class="style1"> of all 7 of the Stack-O-Dead stacks into a folder, and click the Upgrade button at the bottom.There is no real harm in doing this more than once, but be careful, and once should be enough.</span></text>
</content>
<content>
<layer>card</layer>
<id>3</id>
<text>-- This button sends you to the Dead Labels stack. It looks for a-- card with a label for the current show. If not found, it will-- offer to create a set of labels for you, filling in the date,-- location, and the songs from sets 1 and two. The current format-- starts the second set on the second label card. It puts the-- tape flip after the sixth song for each set.---- If you don't want to create the labels, you can cancel, or-- just go to the Tapes stack without bothering to create the-- new card.on mouseUp if the commandKey is down then doHelp exit mouseUp end if -- global listDate, labelList, listVenue put field "date" into listDate put field "location" into listVenue put field "songs" into labelList -- push this card set the lockScreen to true go to stack "Dead Labels" -- go card cardName if findLabelByDate( listDate ) is false then answer "No labels. Shall we make 'em?" with "Cancel"¬ or "Don't Bother!" or "OK" if it is "Cancel" then pop card exit mouseUp else if it is "OK" then newLabels( listDate ) end if end ifend mouseUp</text>
</content>
<content>
<layer>card</layer>
<id>4</id>
<text>-- This button sends you to the Dead Tapes stack. It looks for a-- card for a tape for the current show. If not found, it will-- offer to create one for you, filling in the date and location.-- You can do that, cancel, or just go to the Tapes stack without-- bothering to create the new card.on mouseUp if the commandKey is down then doHelp exit mouseUp end if -- global listDate, labelList, listVenue put field "date" into listDate put field "location" into listVenue put field "songs" into labelList lock screen push this card go to "Dead Tapes" if findTapeByDate( listDate ) is false then answer "No tape yet. Set one up?" with "Cancel" or¬ "OK" or "Don't Bother" if it is "Cancel" then pop card exit mouseUp else if it is "OK" then doMenu "New Card" put listDate into field "date" put listVenue into field "location" unlock screen click at the loc of field "source" end if end ifend mouseUp</text>
</content>
<content>
<layer>card</layer>
<id>5</id>
<text>on newCard tabKeyend newCardfunction findTapeByDate theShowDate -- a binary search through the cards. -- this particular version, upon failing to find the show, will -- leave you on the card immediately PREVIOUS to the date -- searched for. This makes it easy to insert new shows into -- the proper place. -- put the number of this card into origCard put theShowDate into searchDate convert searchDate to seconds put the number of cards into endCard put trunc( endCard / 2 ) into targetCard put 1 into begCard set the cursor to 4 set the lockScreen to true repeat forever showBusy go card targetCard get field "date" if it is theShowDate then return true convert it to seconds if it > searchDate then put the number of this card into endCard else put the number of this card into begCard end if if (endCard - begCard) < 2 then go card begCard get field "date" convert it to seconds if it is searchDate then return true go next card get field "date" convert it to seconds if it is searchDate then return true -- if we reach here the show does not exist yet -- find the show previous to the one we were looking for repeat forever get field "date" convert it to seconds if (it < searchDate) or (the number of this card is 1) then exit repeat go previous card end repeat exit repeat end if -- put trunc( begCard + ((endCard - begCard) / 2) ) into targetCard -- put begCard & " : " & targetCard & " : " & endCard end repeat hide the message return falseend findTapeByDate</text>
</content>
<content>
<layer>card</layer>
<id>7</id>
<text>-- This button will cause two labels for a show to be-- printed. It will get both labels for ONE show (provided the-- show has two labels on file), regardless of weather you-- are on Set I or Set II when you click it.on mouseUp if the commandKey is down then doHelp exit mouseUp end if -- open printing with dialog push this card --lock screen --show field "Print Shield" if field "set" is 2 then go previous card end if print card from 16,20 to 352,304 go next card print card from 16,20 to 352,304 close printing --hide field "Print Shield" pop card -- set the lockScreen to falseend mouseUp</text>
</content>
<content>
<layer>card</layer>
<id>11</id>
<text><span class="style3">tack-O-Dead Grateful Dead StackwareVersion 1.8.2 - March 29, 1991© 1987, 1988, 1989, 1990, 1991 by John GilbertAll Rights ReservedJohn Gilbert19812 226th Ave NEWoodinville, WA 98072(206) 788-0480USENET: ... ! uunet ! mdisea ! gilbertBITNET: gilbert@MDI.COMThis stuff is free to share. If you find it useful, then it would probably make us both feel a little bit better if you sent a small donation to: SEVA Foundation1301 Henry St.Berkeley, CA 94709Believe it if you need it, if you don't just pass it on!Comments and suggestions encouraged!Tapes traded!</span><span class="style1"></span></text>
</content>
<content>
<layer>card</layer>
<id>6</id>
<text>on newCard tabKeyend newCardon newLabels showDate global listDate, labelList, listVenue -- put showDate into it -- convert it to dateItems -- put item 1 of it into theYear set the lockScreen to true if findLabelByDate( showDate ) is true then answer "Labels already made!" exit newLabels end if set the cursor to 4 put empty into Venue put empty into songList push this card if showDate is listDate then put labelList into songList put item 1 of listVenue into Venue else go to stack "Dead Shows" put findShowByDate( showDate ) into foundIt if foundIt is true then put item 1 of field "location" into Venue put field "songs" into songList end if end if pop card get field "set" if it is 1 then go next card -- doMenu "New Card" put showDate into field "date" put "1" into field set put Venue into field "location" put Venue into field "side location" -- doMenu "New Card" put showDate into field "date" put "2" into field "set" put Venue into field "location" put Venue into field "side location" -- go prev if songList is not empty then put 0 into firstSet put 0 into secondSet put 1 into songNum put the number of lines in songList into totalSongs -- do first set label put "side A" into tapeSide repeat put line songNum of songList into thisSong add 1 to songNum if thisSong is empty then exit repeat end if put thisSong & return after field tapeSide add 1 to firstSet if firstSet > 6 then put "side B" into tapeSide end if end repeat -- do second set label go to next card put "side A" into tapeSide repeat put line songNum of songList into thisSong put thisSong & return after field tapeSide add 1 to songNum add 1 to secondSet if songNum > totalSongs then exit repeat end if if secondSet > 4 then put "side B" into tapeSide end if end repeat go to previous card end if click at the loc of field "location"end newLabelsfunction findLabelByDate theShowDate -- a binary search through the cards. -- this particular version, upon failing to find the show, will -- leave you on the card immediately PREVIOUS to the date -- searched for. This makes it easy to insert new shows into -- the proper place. -- put the number of this card into origCard put theShowDate into searchDate convert searchDate to seconds put the number of cards into endCard put trunc( endCard / 2 ) into targetCard put 1 into begCard set the cursor to 4 set the lockScreen to true repeat forever showBusy go card targetCard get field "date" if it is theShowDate then return true convert it to seconds if it > searchDate then put the number of this card into endCard else put the number of this card into begCard end if if (endCard - begCard) < 2 then go card begCard get field "date" convert it to seconds if it is searchDate then return true go next card get field "date" convert it to seconds if it is searchDate then return true -- if we reach here the show does not exist yet -- find the show previous to the one we were looking for repeat forever get field "date" convert it to seconds if (it < searchDate) or (the number of this card is 1) then exit repeat go previous card end repeat exit repeat end if -- put trunc( begCard + ((endCard - begCard) / 2) ) into targetCard -- put begCard & " : " & targetCard & " : " & endCard end repeat hide the message return falseend findLabelByDate</text>